import java.util.Scanner;
import java.net.*;
import java.io.*;

public class Zielerreichung implements Serializable
{
	private double sollg;
	private double reachg;
	private double habeng;
	private Mitarbeiter name;
	private Geschaeftsstelle gs;
	private Ziel[] ziele = new Ziel[20];
	private String[] alleziele = new String[20];
	
	
	public void addZiel(String name, double soll, double haben, double sollp)
	{
		
			Scanner eingabe = new Scanner(System.in);
			// System.out.println(gs.getOneOfAlleZiele(j));
			int i=0;
			// int sollp = sollp;
			while(ziele[i] != null)
			{
				i++;
			}
			
			this.sollg += sollp;		
			ziele[i] = new Ziel(name,soll,haben,sollp,this.name);
		
	}
	
	public void updateZielerreichung()
	{
		int i = 0;
		sollg=0;
		habeng =0;
		reachg = 0;
			
			for(i=0;ziele[i] != null;i++)
			{
				ziele[i].updateZiele();
				sollg += ziele[i].getSollP();
				habeng += ziele[i].getHabenP();
			}
		
		if(i==0)
			System.out.println("Bitte zuerst die Ziele erfassen!");
			// return 1;}
		else
		reachg = (habeng/sollg)*100;
		// return 0;}
	}
			
	
	public Zielerreichung(Geschaeftsstelle gs, Mitarbeiter name)
	{
		this.name = name;
		this.sollg =0;
		this.habeng = 0;
		this.gs = gs;
		this.reachg = 0;
	}
	
	public void listZiele()
	{
		int i=0;
		updateZielerreichung();
		System.out.println(name.getName()+","+name.getSurname());
		System.out.println(String.format("\nGesamtzielerreichung: Soll %,.0f Haben: %,.2f Erreicht: %,.2f",sollg,habeng,reachg)+"%");
		for(i=0;ziele[i] != null;i++)
		{
			// ziele[i].updateZiele();
			System.out.print("\n"+i+": Name: "+ziele[i].getZielName());
									System.out.print(String.format("\tSoll: %,.0f \tHaben: %,.0f \tSoll Punkte: %,.0f \tHaben Punkte: %,.1f \tErreicht: %,.2f",ziele[i].getSoll()
									,ziele[i].getHaben()
									,ziele[i].getSollP()
									,ziele[i].getHabenP()
									,ziele[i].getReach())+" %\n\n");
		}
		
	}
	public double getReachG()
	{
		this.reachg = habeng/sollg;
		return reachg;
	}
	
	public double getSollG()
	{
		return sollg;
	}
	
	public double getHabenG()
	{
		return habeng;
	}
	
	public void setHabenG(double habeng)
	{
		this.habeng = habeng;
	}
	
	public Mitarbeiter getMitarbeiter()
	{
		return name;
	}
	
	public Ziel getZiele()
	{
		
		int i;
		Scanner eingabe = new Scanner(System.in);
		System.out.println("Wähle ein Ziel");
		listZiele();
		i = eingabe.nextInt();
		return ziele[i];
	}
	
	public Ziel getZiele(int i)
	{
		return ziele[i];
	}
	
	public Ziel[] getZielArray()
	{
		return ziele;
	}
	
	public void deleteZiel(String string)
	{
		int i=0;
		
		while(alleziele[i] != null)
		{
			if(alleziele[i].equals(string))
			{
				while(alleziele[i] != null)
				{
					alleziele[i] = alleziele[i+1];
					i++;
				}
				break;
			}
			else
				i++;
		}
	}
		
	public void defineZiel()
	{
		int i=0;
		while(alleziele[i] != null)
		{
			i++;
		}
		
		System.out.print("Benenne das Ziel: ");
		Scanner eingabe = new Scanner(System.in);
		String tmp = eingabe.next();
		alleziele[i] = tmp;
	}

	public void defineZiel(String tmp)
	{
		int i=0,j=0;
		boolean flag = false;
		
		while(ziele[j] != null)
		{
			if(ziele[j].getZielName().equals(tmp))
			{
				flag = true;
				break;
			}
			else
			{
				flag=false;
				j++;
			}
		}
		
		if(!flag)
		{
			while(alleziele[i] != null)
			{
				i++;
			}
		alleziele[i] = tmp;
		}
		
	}
	
	public void listAlleZiele()
	{
		int i=0;
		for(i=0;alleziele[i] != null;i++)
		{
			System.out.println(i+":"+" "+alleziele[i]);
		}
	}
	
	public String[] getAlleZiele()
	{
		return alleziele;
	}
	
	public String getOneOfAlleZiele(int i)
	{
		return alleziele[i];
	}
	
	public String getZiel(int i)
	{
		return alleziele[i];
	}
	
	}